package com.qf.juc.day02;

import java.util.concurrent.atomic.AtomicInteger;

class DataTwo{

    private AtomicInteger num = new AtomicInteger(0);

    public int incr(){
        //1:加1
        //int i = num.addAndGet(1);
        //2：设置结果
        //num.set(i);

        return num.incrementAndGet();//加入了CAS 比较并交换  乐观锁

    }

}

/**
 *
 *   多线程在高并发情况下：
 *       默认是不具备原子性
 *       1、syn....   性能太差了
 *       2、乐观锁 （底层CAS） 也是可以实现的  强烈推荐使用CAS
 *
 *
 * @author lixu
 */
public class AtomicIntegerDemo {


    public static void main(String[] args) {
        DataTwo dataTwo = new DataTwo();
        for (int i = 0; i < 10000; i++) {
            new Thread(() -> {
                System.out.println(dataTwo.incr());
            }).start();
        }
    }
}
